package leetcode.题库.数组.普通数组;

/**
 * 合并区间
 *
 * @author yanzhenming
 * @date 2023/4/12  22:20
 */

/**
 * 描述
 */

import java.util.Arrays;

/**
 * 思路
 */
public class Solution56 {

    public static void main(String[] args) {
        int[][] arr = new int[][]{{1,3},{2,6},{8,10},{15,18}};
        System.out.println(merge(arr));
    }

    public static int[][] merge(int[][] intervals) {
        int point = 0;
        Arrays.sort(intervals, (num1, num2)->
            num1[0] - num2[0]
        );
        for (int i = 1; i < intervals.length; i++) {
            if(intervals[point][1] < intervals[i][0]) {
                intervals[++point] = intervals[i];
            } else {
                intervals[point][1] = Math.max(intervals[i][1], intervals[point][1]);
            }
        }
        return Arrays.copyOf(intervals, point+1);
    }



//    public static int[][] merge(int[][] intervals) {
//        int pt = 0;
//        Arrays.sort(intervals, (o1,o2)-> o1[0]-o2[0]);
//        for (int i = 1; i < intervals.length; i++) {
//            // 如果当前一维数组的第一个数比前一个数组的最后一个数大，则取交集
//            if (intervals[i][0] <= intervals[pt][1]) {
//                intervals[pt][1] = Math.max(intervals[pt][1], intervals[i][1]);
//            } else {
//                pt++;
//                intervals[pt] = intervals[i];
//            }
//        }
//        return Arrays.copyOf(intervals, pt+1);
//    }

}
